openpose计算人体骨骼角度

您所在的位置:网站首页 openpose 输出 openpose计算人体骨骼角度

openpose计算人体骨骼角度

2023-08-05 04:58| 来源: 网络整理| 查看: 265

基本原理与实例代码 openpose输出的关键点信息如下图,总共有25个关节点 在这里插入图片描述 对应的关节名称如下: 在这里插入图片描述 使用的是余弦定理计算角度: 在这里插入图片描述 夹角用大写A、B、C表示,边长用小写a、b、c来表示,余弦定理的数学公式如下: 在这里插入图片描述 在这里插入图片描述 python代码实例:

# keypoints_from_images.py import sys import cv2 import os from sys import platform import argparse import time import math def angle_between_points( p0, p1, p2 ): # 计算角度 a = (p1[0]-p0[0])**2 + (p1[1]-p0[1])**2 b = (p1[0]-p2[0])**2 + (p1[1]-p2[1])**2 c = (p2[0]-p0[0])**2 + (p2[1]-p0[1])**2 if a * b == 0: return -1.0 return math.acos( (a+b-c) / math.sqrt(4*a*b) ) * 180 /math.pi def length_between_points(p0, p1): # 2点之间的距离 return math.hypot(p1[0]- p0[0], p1[1]-p0[1]) def get_angle_point(human, pos): # 返回各个部位的关键点 pnts = [] if pos == 'left_elbow': pos_list = (5,6,7) elif pos == 'left_hand': pos_list = (1,5,7) elif pos == 'left_knee': pos_list = (12,13,14) elif pos == 'left_ankle': pos_list = (5,12,14) elif pos == 'right_elbow': pos_list = (2,3,4) elif pos == 'right_hand': pos_list = (1,2,4) elif pos == 'right_knee': pos_list = (9,10,11) elif pos == 'right_ankle': pos_list = (2,9,11) else: print('Unknown [%s]', pos) return pnts for i in range(3): if human[pos_list[i]][2]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3